package io.github.dunwu.javacore.io;

import java.io.*;

/**
 * 文件输入输出流
 *
 * @author Zhang Peng
 */
public class FileStreamDemo {

	private static final String FILEPATH = "d:\\test.txt";

	public static void main(String[] args) throws Exception {
		output(FILEPATH);
		input(FILEPATH);
	}

	public static void output(String filepath) throws IOException {
		// 第1步、使用File类找到一个文件
		File f = new File(filepath);

		// 第2步、通过子类实例化父类对象
		OutputStream out = new FileOutputStream(f);
		// 实例化时，默认为覆盖原文件内容方式；如果添加true参数，则变为对原文件追加内容的方式。
		// OutputStream out = new FileOutputStream(f, true);

		// 第3步、进行写操作
		String str = "Hello World\r\n";
		byte[] bytes = str.getBytes();
		out.write(bytes);

		// 第4步、关闭输出流
		out.close();
	}

	public static void input(String filepath) throws IOException {
		// 第1步、使用File类找到一个文件
		File f = new File(filepath);

		// 第2步、通过子类实例化父类对象
		InputStream input = new FileInputStream(f);

		// 第3步、进行读操作
		// 有三种读取方式，体会其差异
		byte[] bytes = new byte[(int) f.length()];
		int len = input.read(bytes); // 读取内容
		System.out.println("读入数据的长度：" + len);

		// 第4步、关闭输入流
		input.close();
		System.out.println("内容为：\n" + new String(bytes));
	}

}
